package Exception_Study;

public class ExceptionDemo1 {
    public static void main(String[] args) throws InterruptedException {
        /*
            虚拟机默认的处理异常的方式:
                把异常打印在控制台，并结束运行
            自己处理（捕获异常）
            格式：
                try{
                   可能出现异常的代码;
                } catch(异常类名 变量名) {
                    异常的处理代码;
                }
            好处:可以让程序继续往下指向,不会停止

            细节:
                如果我们要捕获多个异常,这些异常如果存在父子关系的话,那么父类一定要写在下面
            了解性:
                在JKD7之后,我们可以在catch中同时捕获多个异常,中间用|进行隔开
                表示如果出现了A异常或B异常的话,采取同一种处理方案
         */

        int[] arr = {1, 2, 3, 4, 5, 6};
        try {
            //可能出现异常的代码
            System.out.println(arr[10]);//此处出现了异常,程序会在这里创建一个ArrayIndexOutOfBoundsException对象
                                        //new ArrayIndexOutOfBoundsException();
                                        //拿着这个对象到catch的小括号中对比,看括号中的变量是否可以接收这个对象
                                        //如果能被接受,表示该异常就被捕获(抓住),执行catch里面对应的代码
                                        //当catch里面的所以代码执行完毕,继续执行try...catch体系下面的代码
        } catch (ArrayIndexOutOfBoundsException e) {
            //如果出现了ArrayIndexOutOfBoundsException异常,我该如何处理
            System.out.println("索引越界");
        }

        System.out.println("康康执行了吗");
        method();
    }

    /*public static void method(){method1();}
    public static void method1(){method2();}
    public static void method2(){method3();}
    public static void method3(){
        int i = 0/0;
        System.out.println(i);
    }*/
    public static void method() throws InterruptedException {method1();}
    public static void method1() throws InterruptedException {method2();}
    public static void method2() throws InterruptedException {method3();}
    public static void method3() throws InterruptedException {
        Thread.sleep(1);
    }
}
